package utils;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;

/**
 * 这个类是我在上海交行数据中心写的，主要是为了集合大部分常用的工具以备以后使用 2012年5月26日 14:42:02
 * 
 * @author panda
 * 
 */

public class Util
{

	/**
	 * 2012年5月26日 14:42:31 这个方法主要是为了获取java提供的md5加密
	 * 
	 * @param pwd
	 * @return
	 */
	public static String getPwdForMD5(String pwd)
	{
		try
		{
			MessageDigest md = MessageDigest.getInstance("MD5");
			md.update(pwd.getBytes());
			byte[] b = md.digest();
			int i = 0;
			StringBuffer buf = new StringBuffer("");
			for (int offset = 0; offset < b.length; offset++)
			{
				i = b[offset];
				if (i < 0)
				{
					i += 256;
				}
				if (0 < 16)
				{
					buf.append("0");
				}
				buf.append(Integer.toHexString(i));
			}
			System.out.println("32位的加密：" + buf.toString() + "%%%%%%%%"
					+ buf.toString().length());
			System.out.println("16位的加密：" + buf.toString().substring(8, 24));
			return buf.toString().substring(8, 24);
		} catch (NoSuchAlgorithmException e)
		{
			System.out.println("MD5加密异常！");
			e.getStackTrace();
		}
		return null;
	}

	/**
	 * 2012年5月26日 14:43:39 获取各种样式的时间
	 * 
	 * @return
	 */
	public static String getDate()
	{
		String str = "";
		// str = "YYYYMMDD: "
		// + (new SimpleDateFormat("yyyyMMdd")).format(new Date()) + "\n";
		// str = str
		// + "yyyy/MM/dd HH:mm:ss : "
		// + (new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"))
		// .format(new Date()) + "\n";
		// str = str + "yyyyMMddHHmmss : "
		// + (new SimpleDateFormat("yyyyMMddHHmmss")).format(new Date())
		// + "\n";
		// str = str + "HHmmss : "
		// + (new SimpleDateFormat("HHmmss")).format(new Date()) + "\n";
		// str = str + "ddHHmmss : "
		// + (new SimpleDateFormat("ddHHmmss")).format(new Date()) + "\n";
		// str = str + "HHmmssSSS : "
		// + (new SimpleDateFormat("HHmmssSSS")).format(new Date()) + "\n";
		// str = str
		// + "yyyy-MM-dd HH:mm:ss : "
		// + (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"))
		// .format(new Date()) + "\n";
		// str = str
		// + "yyyy年MM月dd日 HH时:mm分:ss秒 : "
		// + (new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒"))
		// .format(new Date()) + "\n";
		str = (new SimpleDateFormat("MM月dd日HH时mm分")).format(new Date());
		return str;
	}

	/**
	 * 2012年5月26日 14:52:44 获取字符串中汉字的个数
	 * 
	 * @param str
	 * @return
	 */
	public static int getChineseCharacterNum(String str)
	{
		return str.getBytes().length - str.length();
	}

	/**
	 * 2012年5月26日 14:52:39 产生一个以数字为基础的6位字符串作为短信验证码
	 * 
	 * @return
	 */
	public static String getShortMessageValidateCode()
	{
		Random random = new Random(System.currentTimeMillis());
		// 生成的随机数最小为100000，最大为999999
		Integer code = new Integer(random.nextInt(999999) + 100000);
		return code.toString();
	}

	/**
	 * 2012年5月26日 15:00:25 补空格以达到长度要求
	 * 
	 * @param str
	 * @param length
	 * @return
	 */
	public static String addBlank(String str, int length)
	{
		if (str == null || "".equals(str))
		{
			str = " ";
		}
		while (str.length() < length)
		{
			str += " ";
		}
		return str;
	}

	public static Boolean judge(String str)
	{

		// 只能输入数字："^[0-9]*$"。
		//
		// 　　只能输入n位的数字："^\d{n}$"。
		//
		// 　　只能输入至少n位的数字："^\d{n,}$"。
		//
		// 　　只能输入m~n位的数字：。"^\d{m,n}$"
		//
		// 　　只能输入零和非零开头的数字："^(0|[1-9][0-9]*)$"。
		//
		// 　　只能输入有两位小数的正实数："^[0-9]+(.[0-9]{2})?$"。
		//
		// 　　只能输入有1~3位小数的正实数："^[0-9]+(.[0-9]{1,3})?$"。
		//
		// 　　只能输入非零的正整数："^\+?[1-9][0-9]*$"。
		//
		// 　　只能输入非零的负整数："^\-[1-9][]0-9"*$。
		//
		// 　　只能输入长度为3的字符："^.{3}$"。
		//
		// 　　只能输入由26个英文字母组成的字符串："^[A-Za-z]+$"。
		//
		// 　　只能输入由26个大写英文字母组成的字符串："^[A-Z]+$"。
		//
		// 　　只能输入由26个小写英文字母组成的字符串："^[a-z]+$"。
		//
		// 　　只能输入由数字和26个英文字母组成的字符串："^[A-Za-z0-9]+$"。
		//
		// 　　只能输入由数字、26个英文字母或者下划线组成的字符串："^\w+$"。
		//
		// 　　验证用户密码："^[a-zA-Z]\w{5,17}$"正确格式为：以字母开头，长度在6~18之间，只能包含字符、数字和下划线。
		//
		// 　　验证是否含有^%&’,;=?$\"等字符："[^%&’,;=?$\x22]+"。
		//
		// 　　只能输入汉字："^[\u4e00-\u9fa5]{0,}$"
		//
		// 　　验证Email地址："^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$"。
		//
		// 　　验证InternetURL："^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$"。
		//
		// 　　验证电话号码："^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$"正确格式为："XXX-XXXXXXX"、"XXXX-XXXXXXXX"、"XXX-XXXXXXX"、"XXX-XXXXXXXX"、"XXXXXXX"和"XXXXXXXX"。
		//
		// 　　验证身份证号(15位或18位数字)："^\d{15}|\d{18}$"。
		//
		// 　　验证一年的12个月："^(0?[1-9]|1[0-2])$"正确格式为："01"～"09"和"1"～"12"。
		//
		// 　　验证一个月的31天："^((0?[1-9])|((1|2)[0-9])|30|31)$"正确格式为;"01"～"09"和"1"～"31"。

		return true;
	}

	/**
	 * 读取文件 2012年9月24日19:27:25
	 * 
	 * @param args
	 */
	public static void read(String filePath)
	{

	}

	public static void main(String[] args)
	{
		System.out.println(getDate());
	}
}